package Java常用类的学习;

import java.util.LinkedList;
/*
* 双向队列
*
* */
public class ByQueueTest {
    static  void fillElement(ByQueue<Integer> queue ){
        for(int i=1;i<7;i++){
            queue.addFirst(i);
        }
        for(int i=20;i<25;i++){
            queue.addLast(i);
        }
    }

    public static void main(String[] args) {
        ByQueue<Integer> q=new ByQueue<>();
        fillElement(q);
        System.out.print(q);
        System.out.println();
        while(q.size()!=0){
            System.out.print(q.removeFirst()+" ");
        }
        System.out.println();
        fillElement(q);
        while (q.size()!=0){
            System.out.print(q.removeLast()+" ");
        }
    }
}
class ByQueue <T>{
    private LinkedList<T>queue=new LinkedList<T>();
    //   在队列头部加入元素
    public void addFirst(T e){
        queue.addFirst(e);
    }
    //  在队列尾部加入元素
    public void addLast(T e){
        queue.addLast(e);
    }
    //  返回队列头部模板
    public T getFirst(){
        return queue.getFirst();
    }
    //  返回队列尾部元素
    public T getLast(){
        return queue.getLast();
    }
    //  移除队列的首行元素并返回
    public T removeFirst(){
        return queue.removeFirst();
    }
    //  移除队列的末尾元素并返回
    public T removeLast(){
        return queue.removeLast();
    }
    //返回队列的元素个数
    public int size(){
        return queue.size();
    }
    public String toString(){
        return queue.toString();
    }
}